@import url("https://fonts.googleapis.com/css?family=Space+Mono");
body, html {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
}

input {
  background-color: transparent;
}

input[type=range] {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
}

input[type=range] {
  margin: 0;
  width: 20vmin;
}

input[type=range]:focus {
  outline: none;
}
input[type=range]::-webkit-slider-runnable-track {
  width: 100%;
  height: 1.4vmin;
  cursor: pointer;
  animate: 0.2s;
  background: transparent;
  color: transparent;
  border-radius: 0;
  border: solid var(--colorInner);
  border-width: 0 0 1px;
}

input[type=range]::-webkit-slider-thumb {
  position: relative;
  z-index: 1;
  font-size: 1.9vmin;
  border-radius: 50%;
  border-bottom-left-radius: 0;
  width: 1em;
  height: 1em;
  background-color: var(--colorInner);
  box-shadow: 0 0 0 0.1em var(--colorUI);
  -webkit-transition: 200ms box-shadow linear;
  transition: 200ms box-shadow linear;
  cursor: pointer;
  -webkit-appearance: none;
  transform: translateY(-0.8em) rotate(-45deg);
}

input[type=range]::-moz-range-track {
  width: 100%;
  height: 1.4vmin;
  cursor: pointer;
  animate: 0.2s;
  background: transparent;
  color: transparent;
  border-radius: 0;
  border: solid var(--colorInner);
  border-width: 0 0 1px;
}

input[type=range]::-moz-range-thumb {
  position: relative;
  z-index: 1;
  font-size: 1.9vmin;
  border-radius: 50%;
  border-bottom-left-radius: 0;
  width: 1em;
  height: 1em;
  background-color: var(--colorInner);
  box-shadow: 0 0 0 0.1em var(--colorUI);
  -moz-transition: 200ms box-shadow linear;
  transition: 200ms box-shadow linear;
  cursor: pointer;
  -webkit-appearance: none;
  transform: translateY(-0.8em) rotate(-45deg);
}

input[type=range]::-ms-track {
  width: 100%;
  height: 1.4vmin;
  cursor: pointer;
  animate: 0.2s;
  background: transparent;
  color: transparent;
  border-radius: 0;
  border: solid var(--colorInner);
  border-width: 0 0 1px;
}

input[type=range]::-ms-fill-lower {
  background: var(--colorUI);
  -ms-transition: 200ms background-color linear;
  transition: 200ms background-color linear;
  border: none;
  border-radius: 100%;
}

input[type=range]::-ms-fill-upper {
  background: var(--colorUI);
  -ms-transition: 200ms background-color linear;
  transition: 200ms background-color linear;
  border-radius: 100%;
  box-shadow: none;
}

input[type=range]::-ms-thumb {
  position: relative;
  z-index: 1;
  font-size: 1.9vmin;
  border-radius: 50%;
  border-bottom-left-radius: 0;
  width: 1em;
  height: 1em;
  background-color: var(--colorInner);
  box-shadow: 0 0 0 0.1em var(--colorUI);
  -ms-transition: 200ms box-shadow linear;
  transition: 200ms box-shadow linear;
  cursor: pointer;
  -webkit-appearance: none;
  transform: translateY(-0.8em) rotate(-45deg);
}

body, button, input {
  font-family: "Space Mono", monospace;
}

:root {
  --colorUI: #212121;
}

.gradient {
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  box-shadow: inset 0 0 0 1.6vmin var(--colorUI);
  transition: 200ms box-shadow linear;
}
.gradient__text, .gradient::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
.gradient::before {
  background: var(--colorUI);
  transition: 200ms background-color linear;
  width: 54.9vmin;
  height: 54.9vmin;
  border-radius: 50%;
  box-shadow: 0 0 10rem currentColor;
}
.gradient__text {
  line-height: 1.6;
  text-align: center;
  width: 20vmin;
  font-size: 1.9vmin;
  color: var(--colorInner);
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  margin-top: 8vmin;
}
.gradient__text strong {
  display: block;
  margin-bottom: 0.5em;
}
.gradient__text.pouf-enter-active, .gradient__text.pouf-leave-active {
  opacity: 1;
  transition: opacity 0.3s linear, transform 0.4s cubic-bezier(0.7, 0.3, 0, 1);
}
.gradient__text.pouf-enter, .gradient__text.pouf-leave-to {
  opacity: 0;
  transform: translate(-50%, -75%);
  transform-origin: 50% 0%;
}

.picker {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 100%;
  height: 100%;
}
.picker .ellipse {
  opacity: 0;
}
.picker__svg {
  stroke-width: 15;
  overflow: auto;
  width: 100%;
  height: 100%;
  transform: scale(0.925);
}
.picker--inner {
  transform: translate(-50%, -50%) scale(0.87);
}
.picker--inner .ellipse {
  transform: translate(2px, 2px) scale(0.98);
}

.controls, .pointer, .pointer__marker {
  pointer-events: none;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 57vmin;
  height: 57vmin;
}

.pointer {
  cursor: move;
  width: 100%;
  height: 100%;
}
.pointer__marker {
  width: 51.6vmin;
  height: 51.6vmin;
}
.pointer__marker::before, .pointer__marker::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 0;
  transform: translateX(-50%);
}
.pointer__marker::before {
  height: 5vmin;
  width: 0.1rem;
  background: var(--colorUI);
  transition: 200ms background-color linear;
}
.pointer__marker::after {
  background: currentColor;
  border-radius: 50%;
  transform: translateX(-50%) rotate(-45deg);
  border-bottom-left-radius: 0;
  font-size: 1.9vmin;
  margin-top: -0.5em;
  width: 1em;
  height: 1em;
  box-shadow: 0 0 0 0.1rem var(--colorUI);
  transition: 200ms box-shadow linear;
}
.pointer--lower .pointer__marker {
  margin-top: -0.7rem;
}
.pointer--lower .pointer__marker::before {
  box-shadow: 0 0 0 0.6rem var(--colorUI);
  transition: 200ms box-shadow linear;
  width: 0.7rem;
  border-radius: 100%;
}
.pointer--lower .pointer__marker::after {
  display: none;
}

.title {
  position: absolute;
  top: 50%;
  left: 0;
  right: 0;
  text-align: center;
  font-size: 0.8em;
  margin-top: -6vmin;
}

.ratio {
  z-index: 2;
  position: absolute;
  pointer-events: auto;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  color: #fff;
  text-shadow: 0 0 0.5em var(--colorUI);
  transition: 200ms text-shadow linear;
}
.ratio__label {
  display: none;
  font-size: 0.7rem;
  text-align: center;
  margin-bottom: 0.5em;
}

.gradientval {
  display: none;
}

.actions {
  display: flex;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  margin-top: 14.5vmin;
  will-change: transform;
}
.actions--up .actions__button {
  transform: translateY(-8vmin);
  transition: 340ms transform cubic-bezier(0.8, 0.3, 0.5, 1.2);
}
.actions--up .actions__button:nth-child(1) {
  transition-delay: 100ms;
  transform: translate(-3.5vmin, -8vmin);
}
.actions--up .actions__button:nth-child(2) {
  transition-delay: 170ms;
}
.actions--up .actions__button:nth-child(3) {
  transition-delay: 240ms;
  transform: translate(3.5vmin, -8vmin);
}
.actions--up .actions__button:nth-child(4) {
  transition-delay: 250ms;
}

.button {
  position: relative;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  color: var(--colorInner);
  background: transparent;
  border: none;
  cursor: pointer;
  display: inline-block;
  margin-right: -4px;
  font-size: 2.4vmin;
  outline: none;
  padding: 0.1em 0.3em;
}
.button:hover svg {
  transform: scale(1);
}
.button:hover .button__text {
  opacity: 1;
  transform: translateX(50%);
}
.button__icon {
  display: block;
  font-style: normal;
  width: 2.4vmin;
  height: 2.4vmin;
}
.button__text {
  opacity: 0;
  pointer-events: none;
  position: absolute;
  top: 110%;
  right: 50%;
  transform: translateX(50%) translateY(-50%);
  font-size: 0.6em;
  line-height: 1.3;
  padding: 0.2em 0.4em;
  transition: transform 200ms, opacity 100ms;
  transition-delay: 100ms, 100ms;
}
.button svg {
  width: 2.4vmin;
  transition: 100ms transform ease-out;
  transform: scale(0.8);
}
.button svg path {
  fill: currentColor;
}
.button--play svg {
  width: 1.05vmin;
}

.app--uianimate .controls {
  transition: 444ms transform ease-in-out 200ms;
  will-change: transform;
}
.app--uianimate .gradient::before {
  transition: 444ms transform ease-in-out 100ms;
  will-change: transform;
}

.app--uihide .controls {
  transform: translate(-50%, -50%) scale(0);
}
.app--uihide .gradient::before {
  transform: translate(-50%, -50%) scale(0);
}